package co.edu.udea.iw.ws;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import co.edu.udea.iw.bl.ClienteBL;
import co.edu.udea.iw.dot.Cliente;
import co.edu.udea.iw.exception.IWBLException;
import co.edu.udea.iw.exception.IWDaoException;

@Path("cliente")
@Component
public class Servicios {
	
	@Autowired
	private ClienteBL clienteBL;

//	@GET
//	@Produces(MediaType.TEXT_HTML)
//	@Path("guardar/{nombres}/{apellidos}/{email}/{usuario}/{cedula}")
//	public String guardarCliente(@PathParam("cedula") String cedula, @PathParam("nombres")String nombres, @PathParam("apellidos") String apellidos, 
//			@PathParam("email") String email, @PathParam("usuario")String usuario) throws RemoteException{
//		
//		return "Cedula: " + cedula;
//		
//	}
	
	@GET
	@Produces(MediaType.TEXT_HTML)
	@Path("guardar")
	public String guardarCliente(@QueryParam("cedula") String cedula, @QueryParam("nombres")String nombres, @QueryParam("apellidos") String apellidos, 
			@QueryParam("email") String email, @QueryParam("usuario")String usuario) throws RemoteException{
		
		
		try {
			clienteBL.guardar(cedula, nombres, apellidos, email, usuario);
			
			return "Se guardo el cliente correctamente";
		} catch (IWDaoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IWBLException e) {
			return e.getMessage();
		}
		return "Se guardo el cliente correctamente";
		
	}
	
	
	@Path("obtener")
	@Produces(MediaType.APPLICATION_JSON)
	@GET
	public List<Cliente> obtener() throws RemoteException{
		
		List<Cliente> clientes = new ArrayList<Cliente>();
		
		List<co.edu.udea.iw.dto.Cliente> resultado;
		try {
			resultado = clienteBL.obtenerClientes();
		
			for(co.edu.udea.iw.dto.Cliente cliente : resultado){
				Cliente c = new Cliente();
				
				c.setCedula(cliente.getCedula());
				c.setApellidos(cliente.getApellidos());
				c.setNombres(cliente.getNombres());
				c.setCorreoElectronico(cliente.getCorreoElectronico());
				
				clientes.add(c);
			}
		} catch (IWDaoException e) {
			throw new RemoteException(e.getMessage());
		} catch (IWBLException e) {
			throw new RemoteException(e.getMessage());
		}
		
		return clientes;
		
	}
}
